MySQLのデータベースお引っ越し
よく訓練されたアップル信者、都元です。
MySQLのデータベースのコピーとか、お引っ越しをしたい時、ありますよね。今AWS上で新規にMySQLを使いたいのであれば迷い無くRDSを選ぶと思いますが、まだRDSのmicroインスタンスが無かった頃に、microのEC2上に生でMySQLを建てた…とか、まぁ歴史上の理由は様々でしょう。
まぁ「無停止で」とか言い出すと色々大変ですが、そうでなければ(計画停止をすれば)MySQLの引っ越しって実はかなり簡単です。
まずは事前に出力先のMySQLの方はCREATE DATABASEを済ませておきます。CREATE DATABASE済みの場合は不要です。
$ mysqladmin \ -u'cmsampleuser' \ -p'cmsamplepass' \ -h'dest.hostname.example.com' \ --default-character-set=utf8 create dest_database
あとは、アプリを止めて、mysqldumpとmysqlをパイプで繋いでドーンと一発です。
$ mysqldump \ --single-transaction \ --no-autocommit \ -u'cmsampleuser' \ -p'cmsamplepass' \ -h'source.hostname.example.com' \ source_database \ | mysql \ -u'cmsampleuser' \ -p'cmsamplepass' \ -h'dest.hostname.example.com' \ dest_database
場合によっては、パイプで直結ではなく、ファイルを経由させれば、バックアップにもなりますね。
$ mysqldump \ --single-transaction \ --no-autocommit \ -u'cmsampleuser' \ -p'cmsamplepass' \ -h'source.hostname.example.com' \ source_database \ | gzip >cmsampledb-dump.sql.gz $ gunzip -c cmsampledb-dump.sql.gz | mysql \ -u'cmsampleuser' \ -p'cmsamplepass' \ -h'dest.hostname.example.com' \ dest_database
終わったら、アプリの接続先を新DBに切り替えて起動するだけですね。
その他、お引っ越し用途だけでなく、ローカルの開発用DBのコピーを作る場合など、かなり応用は効くと思います。